home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / MISC / COIL200 / TABLES.C < prev    next >
C/C++ Source or Header  |  1996-04-18  |  3KB  |  153 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. /* Compute and print out various engineering handbook tables
  5.  */
  6.  
  7. #define fabs(x) ( (x) < 0 ? -(x) : (x) )
  8.  
  9. extern double MACHEP, MAXNUM;
  10. extern double Kn, Kp, P, kl;
  11. double sqrt(), log(), pow(), sin(), cos(), atan();
  12. double ellpe(), ellpk(), chbevl();
  13. double rsol(), lyle(), dwighta(), dwightb(), butterw();
  14. double spielrein(), nagaoka();
  15.  
  16.  
  17.  
  18. main()
  19. {
  20. double a, b, c, N, L, q;
  21. long i;
  22. int j;
  23.  
  24. N = 1.0;
  25.  
  26. /* Print Nagaoka's table */
  27. printf( "Values of Nagaoka's Constant K for Circular Solenoidal Current Sheet\n" );
  28. printf( " L = 2e-9 pi^2 (2a/b) N^2 a K  henrys\n" );
  29. printf( " a = radius, b = length\n\n" );
  30. printf( "2a/b   K\n\n" );
  31. b = 2.0;
  32. a = 0.0;
  33. i = 0.0;
  34. while( i <= 40000L )
  35.     {
  36.     a = 0.01 * i;
  37.     L = nagaoka( a, b, N );
  38.     printf( "%4.2lf %7.5lf\n", a, Kn );
  39.     if( i >= 10000L )
  40.         {
  41.         i += 10000L;
  42.         continue;
  43.         }
  44.     if( i >= 4000 )
  45.         {
  46.         i += 1000;
  47.         continue;
  48.         }
  49.     if( i >= 2000 )
  50.         {
  51.         i += 200;
  52.         continue;
  53.         }
  54.     if( i >= 500 )
  55.         {
  56.         i += 50;
  57.         continue;
  58.         }
  59.     if( i >= 200 )
  60.         {
  61.         i += 10;
  62.         continue;
  63.         }
  64.     if( i >= 100 )
  65.         {
  66.         i += 5;
  67.         continue;
  68.         }
  69.     i += 1;
  70.     }
  71.  
  72. printf( "\n\n\n" );
  73. printf( "Grover's Table of K\' for Circular Coils of Rectangular Cross Section\n" );
  74. printf( " a = mean radius, b = length, c = winding thickness\n" );
  75. printf( " L = 2e-9 pi^2 (2a/b) N^2 a K\'  henrys\n\n" );
  76. a = 0.5;
  77. c = 0.025;
  78. i = 25;
  79. while( c < 1.0 )
  80. while( i <= 1000 )
  81. {
  82. c = 0.001 * i;
  83. printf( "       c/2a = %.3lf\n", c );
  84. printf( "b/c = 0, .1, .2, ..., 1.0\n" );
  85. for( j=0; j<=10; j++ )
  86.     {
  87.     q = 0.1 * j;
  88.     b = q * c;
  89.     L = rsol( a, b, c, N );
  90.     printf( "%6.4lf ", Kp );
  91.     }
  92. printf( "\n" );
  93. printf( "c/b = 0, .1, .2, ..., 1.0\n" );
  94. for( j=0; j<=10; j++ )
  95.     {  /* c/b = q */
  96.     q = 0.1 * j;
  97.     if( q == 0.0 )
  98.         b = 9.9e5*c;
  99.     else
  100.         b = c/q;
  101.     L = rsol( a, b, c, N );
  102.     printf( "%6.4lf ", Kp );
  103.     }
  104. printf( "\n" );
  105. if( i == 25 )
  106.     {
  107.     i = 50;
  108.     }
  109. else
  110.     {
  111.     if( i == 50 )
  112.         i = 100;
  113.     else
  114.         i += 100;
  115.     }
  116. }
  117.  
  118. printf( "\n\n\n" );
  119. printf( "Grover's Table of P for Flat Disk Coils\n" );
  120. printf( " L = 1e-9 N^2 a P  henrys\n\n" );
  121. printf( "  c/2a   P\n" );
  122. a = 0.5;
  123. b = 0.0;
  124. i = 1;
  125. N = 1.0;
  126. while( i <= 100L )
  127.     {
  128.     c = 0.01 * i;
  129.     L = rsol( a, b, c, N );
  130.     printf( "%4.2lf %7.3lf\n", c, P );
  131.     i += 1;
  132.     }
  133.  
  134.  
  135. printf( "\n\n\n" );
  136. printf( "Grover's Table of P for Circular Coils of Square Cross Section\n" );
  137. printf( " b = c\n" );
  138. printf( " L = 1e-9 N^2 a P  henrys\n\n" );
  139. printf( "  c/2a   P\n" );
  140. a = 0.5;
  141. i = 1;
  142. N = 1.0;
  143. while( i <= 100L )
  144.     {
  145.     c = 0.01 * i;
  146.     b = c;
  147.     L = rsol( a, b, c, N );
  148.     printf( "%4.2lf %7.3lf\n", c, P );
  149.     i += 1;
  150.     }
  151. }
  152.  
  153.